/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package vn.ugame.model.dal;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import vn.ugame.model.entity.Module;
import vn.ugame.module.ModuleType;

/**
 *
 * @author Tony
 */
public class ModuleDA {

    private List<Module> modules;
    private Locale locale;

    public ModuleDA(Locale locale) {
        modules = new ArrayList<Module>();
        this.locale = locale;

        createModules();
    }

    public Module findModuleById(String id) {
        for (Module module : modules) {
            if (module.getId().equalsIgnoreCase(id)) {
                return module;
            }
        }
        return null;
    }
    
     public Module findLocalModule(String id, Locale locale) {
        for (Module module : modules) {
            if (module.getId().equalsIgnoreCase(id) && module.getLocale().getLanguage().equals(locale.getLanguage())) {
                return module;
            }
        }
        return null;
    }

    public List<Module> findLocalModules(String id) {
        List<Module> moduleList = new ArrayList<Module>();
        for (Module module : modules) {
            if (module.getId().equalsIgnoreCase(id)) {
                moduleList.add(module);
            }
        }
        return moduleList;
    }

    public Module findModuleByName(String name) {
        for (Module module : modules) {
            if (module.getName().equalsIgnoreCase(name)) {
                return module;
            }
        }
        return null;
    }

    public List<Module> getAllModules() {
        return modules;
    }

    public List<Module> getRootModules() {
        List<Module> moduleList = new ArrayList<Module>();
        if (locale != null) {
            for (Module module : modules) {
                if (module.isRoot() && module.getLocale().getLanguage().equals(locale.getLanguage())) {
                    moduleList.add(module);
                }
            }
        }
        return moduleList;
    }

    public List<Module> findModulesByType(String type) {
        List<Module> moduleList = new ArrayList<Module>();
        if (locale != null) {
            for (Module module : modules) {
                if (module.getType().equals(type) && module.getLocale().getLanguage().equals(locale.getLanguage())) {
                    moduleList.add(module);
                }
            }
        }
        return moduleList;
    }

    private void createModules() {
        Module module;

        module = new Module("M1", "news", "News", ModuleType.NEWS, true);
        module.setLocale(new Locale("en-US"));
        modules.add(module);

        module = new Module("M1", "tin-tuc", "Tin Tức", ModuleType.NEWS, true);
        module.setLocale(new Locale("vi-VN"));
        modules.add(module);

        module = new Module("M2", "store", "Store", ModuleType.STORE_ALL, true);
        module.setLocale(new Locale("en-US"));
        modules.add(module);

        module = new Module("M2", "cua-hang", "Cửa hàng", ModuleType.STORE_ALL, true);
        module.setLocale(new Locale("vi-VN"));
        modules.add(module);

        module = new Module("M3", "forum", "Forum", ModuleType.FORUM, true);
        module.setLocale(new Locale("en-US"));
        modules.add(module);

        module = new Module("M3", "dien-dan", "Diễn đàn", ModuleType.FORUM, true);
        module.setLocale(new Locale("vi-VN"));
        modules.add(module);

        module = new Module("M4", "game", "Game", ModuleType.STORE_SPECIFIC, false);
        module.setLocale(new Locale("en-US"));
        modules.add(module);

        module = new Module("M4", "tro-choi", "Trò chơi", ModuleType.STORE_SPECIFIC, false);
        module.setLocale(new Locale("vi-VN"));
        modules.add(module);

        module = new Module("M6", "app", "Apps", ModuleType.STORE_SPECIFIC, false);
        module.setLocale(new Locale("en-US"));
        modules.add(module);

        module = new Module("M6", "ung-dung", "Ứng dụng", ModuleType.STORE_SPECIFIC, false);
        module.setLocale(new Locale("vi-VN"));
        modules.add(module);

        module = new Module("M7", "top-new", "Top New", ModuleType.STORE_FILTER, false);
        module.setLocale(new Locale("en-US"));
        modules.add(module);

        module = new Module("M7", "moi-nhat", "Mới nhất", ModuleType.STORE_FILTER, false);
        module.setLocale(new Locale("vi-VN"));
        modules.add(module);

        module = new Module("M8", "top-rate", "Top Rate", ModuleType.STORE_FILTER, false);
        module.setLocale(new Locale("en-US"));
        modules.add(module);

        module = new Module("M8", "ua-thich", "Ưa thích", ModuleType.STORE_FILTER, false);
        module.setLocale(new Locale("vi-VN"));
        modules.add(module);

        module = new Module("M9", "hot", "Hot", ModuleType.STORE_FILTER, false);
        module.setLocale(new Locale("en-US"));
        modules.add(module);

        module = new Module("M9", "hay-nhat", "Hay nhất", ModuleType.STORE_FILTER, false);
        module.setLocale(new Locale("vi-VN"));
        modules.add(module);

        module = new Module("M10", "download", "Download", ModuleType.DOWNLOAD, false);
        module.setLocale(new Locale("en-US"));
        modules.add(module);

        module = new Module("M11", "image-engine", "Image Engine", ModuleType.IMAGE, false);
        module.setLocale(new Locale("en-US"));
        modules.add(module);
    }
}
